package com.wzdigit.wms.basic.domain.transfer;

import com.baomidou.mybatisplus.annotation.*;
import com.wzdigit.framework.orm.model.BasicDomain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * <p>
 * 发货单,GDN=Goods Delivery Notes
 * </p>
 *
 * @author 
 * @since 2021-03-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("WMS_GDN_HEADER")
@KeySequence(value = "WMS_GDN_HEADER_SEQ", clazz = Integer.class)
public class GdnHeader extends BasicDomain {

    private static final long serialVersionUID = 1L;

    /**
     * 发货单表头ID
     */
    @TableId(value = "GDN_HEADER_ID", type = IdType.INPUT)
    @ApiModelProperty(value = "发货单表头ID")
    private Long gdnHeaderId;

    /**
     * 发货单单号
     */
    @TableField("GDN_NO")
    @ApiModelProperty(value = "发货单单号")
    private String gdnNo;

    /**
     * 来源发货通知单
     */
    @TableField("SOURCE_SHIP_NOTICE")
    @ApiModelProperty(value = "来源发货通知单")
    private String sourceShipNotice;

    /**
     * 参考柜号
     */
    @TableField("REF_CNTR_NO")
    @ApiModelProperty(value = "参考柜号")
    private String refCntrNo;

    /**
     * 柜型
     */
    @TableField("CNTR_TYPE")
    @ApiModelProperty(value = "柜型")
    private String cntrType;

    /**
     * 优先级－订单作业优先级。常用于 RF 操作，任务队列排序中。紧急订单可排序在前。
     */
    @TableField("PRIORITY")
    @ApiModelProperty(value = "优先级－订单作业优先级。常用于 RF 操作，任务队列排序中。紧急订单可排序在前。")
    private Integer priority;

    /**
     * 货主，客户主数据中 客户类型=货主，取客户ID
     */
    @TableField("OWNER")
    @ApiModelProperty(value = "货主，客户主数据中 客户类型=货主，取客户ID")
    private Integer owner;

    /**
     * 客户
     */
    @TableField("CUSTOMER")
    @ApiModelProperty(value = "客户")
    private Integer customer;

    /**
     * 工厂(组织)
     */
    @TableField("FACTORY")
    @ApiModelProperty(value = "工厂(组织)")
    private String factory;

    /**
     * 发货日期
     */
    @TableField("SHIP_DATE")
    @ApiModelProperty(value = "发货日期")
    private Date shipDate;

    /**
     * 发货港
     */
    @TableField("SHIP_PORT")
    @ApiModelProperty(value = "发货港")
    private String shipPort;

    /**
     * 到货港
     */
    @TableField("ARRIVE_PORT")
    @ApiModelProperty(value = "到货港")
    private String arrivePort;

    /**
     * 截关日期
     */
    @TableField("CLOSING_DATE")
    @ApiModelProperty(value = "截关日期")
    private Date closingDate;

    /**
     * 发货单打印
     */
    @TableField("GDN_PRINT")
    @ApiModelProperty(value = "发货单打印")
    private Integer gdnPrint;

    /**
     * 装柜联络单打印标识
     */
    @TableField("LOADING_DOC_PRINT")
    @ApiModelProperty(value = "装柜联络单打印标识")
    private Integer loadingDocPrint;

    /**
     * 余留单打印标识
     */
    @TableField("REMAIN_DOC_PRINT")
    @ApiModelProperty(value = "余留单打印标识")
    private Integer remainDocPrint;

    /**
     * 销售类型，内销：1，外销：2
     */
    @TableField("SALE_TYPE")
    @ApiModelProperty(value = "销售类型，内销：1，外销：2")
    private Integer saleType;

    /**
     * 序列号采集
     */
    @TableField("SN_SCAN")
    @ApiModelProperty(value = "序列号采集")
    private Integer snScan;

    /**
     * 交货地
     */
    @TableField("PLACE_OF_DELIVERY")
    @ApiModelProperty(value = "交货地")
    private String placeOfDelivery;

    /**
     * 释放状态
     */
    @TableField("RELEASE_FLAG")
    @ApiModelProperty(value = "释放状态")
    private Integer releaseFlag;

    /**
     * 承运人
     */
    @TableField("CARRIER_ID")
    @ApiModelProperty(value = "承运人")
    private String carrierId;

    /**
     * 下单方
     */
    @TableField("ISSUE_PARTY_ID")
    @ApiModelProperty(value = "下单方")
    private String issuePartyId;

    /**
     * 业务担当
     */
    @TableField("FOLLOW_UP")
    @ApiModelProperty(value = "业务担当")
    private String followUp;

    /**
     * 订单来源
     */
    @TableField("DATA_SOURCE")
    @ApiModelProperty(value = "订单来源")
    private String dataSource;

    /**
     * 用户自定义字段1
     */
    @TableField("UDF1")
    @ApiModelProperty(value = "用户自定义字段1")
    private String udf1;

    /**
     * 用户自定义字段2
     */
    @TableField("UDF2")
    @ApiModelProperty(value = "用户自定义字段2")
    private String udf2;

    /**
     * 用户自定义字段3
     */
    @TableField("UDF3")
    @ApiModelProperty(value = "用户自定义字段3")
    private String udf3;

    /**
     * 用户自定义字段4
     */
    @TableField("UDF4")
    @ApiModelProperty(value = "用户自定义字段4")
    private String udf4;

    /**
     * 用户自定义字段5
     */
    @TableField("UDF5")
    @ApiModelProperty(value = "用户自定义字段5")
    private String udf5;

    /**
     * 备注
     */
    @TableField("COMMENTS")
    @ApiModelProperty(value = "备注")
    private String comments;

    /**
     * 发货单状态
     */
    @TableField("STATUS")
    @ApiModelProperty(value = "发货单状态")
    private Integer status;

    /**
     * 创建人
     *//*
    @TableField("CREATE_USER")
    private String createUser;

    *//**
     * 创建时间
     *//*
    @TableField("CREATE_TIME")
    private Date createTime;

    *//**
     * 修改人
     *//*
    @TableField("MODIFY_USER")
    private String modifyUser;

    *//**
     * 修改时间
     *//*
    @TableField("MODIFY_TIME")
    private Date modifyTime;*/

    /**
     * ASN 类型 － ASN 的单据类型，可区分不同操作类型、不同来源等的入库单据。系统
     * 发货单类型
     */
    @TableField("GDN_TYPE")
    @ApiModelProperty(value = "发货单类型")
    private String gdnType;

    /**
     * 出口国
     */
    @TableField("EXPORT_COUNTRY")
    @ApiModelProperty(value = "出口国")
    private String exportCountry;

    /**
     * 建单人
     */
    @TableField("GDN_CREATE_USER")
    @ApiModelProperty(value = "建单人")
    private String gdnCreateUser;

    /**
     * 建单时间
     */
    @TableField("GDN_CREATE_TIME")
    @ApiModelProperty(value = "建单时间")
    private Date gdnCreateTime;

    /**
     * 发货单参考信息1
     */
    @TableField("GDN_REF1")
    @ApiModelProperty(value = "发货单参考信息1")
    private String gdnRef1;

    /**
     * 发货单参考信息2
     */
    @TableField("GDN_REF2")
    @ApiModelProperty(value = "发货单参考信息2")
    private String gdnRef2;

    /**
     * 发货单参考信息3
     */
    @TableField("GDN_REF3")
    @ApiModelProperty(value = "发货单参考信息3")
    private String gdnRef3;

    /**
     * 发货单参考信息4
     */
    @TableField("GDN_REF4")
    @ApiModelProperty(value = "发货单参考信息4")
    private String gdnRef4;

    /**
     * 发货单参考信息5
     */
    @TableField("GDN_REF5")
    @ApiModelProperty(value = "发货单参考信息5")
    private String gdnRef5;

    /**
     * 货柜序号
     */
    @TableField("CNTR_SEQ")
    @ApiModelProperty(value = "货柜序号")
    private String cntrSeq;

    /**
     * 计划装柜时间
     */
    @TableField("PLAN_LOADING_TIME")
    @ApiModelProperty(value = "计划装柜时间")
    private Date planLoadingTime;

    /**
     * ERP移动类型
     */
    @TableField("ERP_MOVE_TYPE")
    @ApiModelProperty(value = "ERP移动类型")
    private String erpMoveType;

    /**
     * 装柜发货单号
     */
    @TableField("CTNR_SHIP_NO")
    @ApiModelProperty(value = "装柜发货单号")
    private String ctnrShipNo;

    /**
     * 审单人
     */
    @TableField("GDN_APPROVED_USER")
    @ApiModelProperty(value = "审单人")
    private String gdnApprovedUser;

    /**
     * 审核时间
     */
    @TableField("GDN_APPROVED_TIME")
    @ApiModelProperty(value = "审核时间")
    private Date gdnApprovedTime;

    
    /**
     * 柜号(实际)
     */
    @TableField("CNTR_NO")
    @ApiModelProperty(value = "柜号(实际)")
    private String cntrNo;
    
    /**
     * 订舱号
     */
    @TableField("BOOKING_NO")
    @ApiModelProperty(value = "订舱号")
    private String bookingNo;
    
    /**
     * 封条号
     */
    @TableField("SEAL_NO")
    @ApiModelProperty(value = "封条号")
    private String sealNo;
    
    /**
     * 车牌号
     */
    @TableField("VEHICLE_NO")
    @ApiModelProperty(value = "车牌号")
    private String vehicleNo;
    /**
     * 收货人
     */
    @TableField(value = "CONSIGNEE_ID")
    @ApiModelProperty(value = "收货人")
    private Long consigneeId;

    /**
     * 收货人名称
     */
    @TableField(value = "CONSIGNEE_NAME")
    @ApiModelProperty(value = "收货人名称")
    private String consigneeName;

    /**
     * 制造工厂
     */
    @TableField(value = "MFG_PLANT")
    @ApiModelProperty(value = "制造工厂")
    private String mfgPlant;

    /**
     * 收货部门
     */
    @TableField(value = "RCV_DEPT")
    @ApiModelProperty(value = "制造工厂")
    private String rcvDept;

    @TableField(value = "SOURCE_TYPE")
    private String sourceType;

    @TableField(value = "CLOSEEND_TIME")
    private Date closeEndTime;

    //TMS回传结果，0失败，1成功
    @TableField(value = "TMS_FLAG")
    private Integer tmsFlag;

    //初次分库时间
    @TableField(value = "SPLIT_DATE")
    private Date splitDate;

    //是否需要交接确认
    @TableField(value = "NEED_SURE")
    private Integer needSure;

}
